package com.cencat.common.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.cencat.common.dto.BaseDTO;

import java.util.List;

/**
 * 基础服务接口
 * 继承MyBatis-Plus的IService接口，提供额外的业务服务方法
 * 
 * @param <T> 实体类型
 * @author cencat
 * @since 2024-01-01
 */
public interface BaseService<T> extends IService<T> {

    /**
     * 根据DTO分页查询
     * 
     * @param dto 查询DTO
     * @return 分页结果
     */
    IPage<T> page(BaseDTO dto);

    /**
     * 根据租户ID查询列表
     * 
     * @param tenantId 租户ID
     * @return 实体列表
     */
    List<T> listByTenantId(Long tenantId);

    /**
     * 根据租户ID分页查询
     * 
     * @param page 分页参数
     * @param tenantId 租户ID
     * @return 分页结果
     */
    IPage<T> pageByTenantId(IPage<T> page, Long tenantId);
}